# -*- coding: utf-8 -*-

'''eof
name:区分长短模型
code:STLT_Check
tableName:
columnName:
groups:准入>烟商
dependencies:BTM
type:常用指标
datasourceType:在线指标
description:
eof'''

'''
T1:回推1个月 T2：回推2个月 .... T6：回推6月

'''
import sys
import pandas as pd
import datetime
import numpy as np

reload(sys)
sys.setdefaultencoding('utf-8')




def LongTermShortTermCheck():
    null_type_list = ['', None, 'null', 'Null', '/', ' ']
    num = {'T6': [], 'T5': [], 'T4': [], 'T3': [], 'T2': [], 'T1': []}
    count = 0
    try:
        BTM_ = BTM['data']
        if Formate(BTM_.get('bbd_dotime')) is not None:
            ApplTime = datetime.datetime.strptime(Formate(BTM_['bbd_dotime']), '%Y%m%d')
            last_year_days_list = [
                (ApplTime - pd.tseries.offsets.DateOffset(days=i * 30)).strftime('%Y%m%d') \
                for i in xrange(6, -1, -1)]
        else:
            last_year_days_list = [
                (datetime.datetime.now() - pd.tseries.offsets.DateOffset(days=i * 30)).strftime('%Y%m%d') \
                for i in xrange(6, -1, -1)]
    except:
        return u'缺失值'

    try:
        if BTM_.has_key('indent') and BTM_['indent'] not in null_type_list \
            and len(BTM_['indent']) > 1:
            for i in BTM_['indent']:
                if i.has_key('indentDate') and i['indentDate'] not in null_type_list \
                    and i.has_key('indentNum') and i['indentNum'] not in null_type_list \
                    and i.has_key('indentMoney') and i['indentMoney'] not in null_type_list \
                    and isfloat(i['indentMoney']) \
                    and Formate(i['indentDate']) is not None:
                    if Formate(i['indentDate']) > last_year_days_list[0] and Formate(i['indentDate']) <= last_year_days_list[1]:
                        num['T6'].append(i['indentNum'])
                    elif Formate(i['indentDate']) > last_year_days_list[1] and Formate(i['indentDate']) <= last_year_days_list[2]:
                        num['T5'].append(i['indentNum'])
                    elif Formate(i['indentDate']) > last_year_days_list[2] and Formate(i['indentDate']) <= last_year_days_list[3]:
                        num['T4'].append(i['indentNum'])
                    elif Formate(i['indentDate']) > last_year_days_list[3] and Formate(i['indentDate']) <= last_year_days_list[4]:
                        num['T3'].append(i['indentNum'])
                    elif Formate(i['indentDate']) > last_year_days_list[4] and Formate(i['indentDate']) <= last_year_days_list[5]:
                        num['T2'].append(i['indentNum'])
                    elif Formate(i['indentDate']) > last_year_days_list[5] and Formate(i['indentDate']) <= last_year_days_list[6]:
                        num['T1'].append(i['indentNum'])
                    else:
                        pass
            for key in num.keys():
                if num[key] != []:
                    count += 1
                else:
                    pass
            if count == 6:
                return u'LT'
            else:
                return u'ST'
        else:
            return u'缺失值'
    except:
        return u'缺失值'



def Formate(time):
    import re
    import datetime
    r = re.compile(r'\D+')
    try:
        date = datetime.datetime.strptime(time, '%Y.%m.%d').strftime('%Y%m%d')
    except:
        try:
            date = datetime.datetime.strptime(time, '%Y-%m-%d').strftime('%Y%m%d')
        except:
            try:
                date = datetime.datetime.strptime(time, '%Y/%m/%d').strftime('%Y%m%d')
            except:
                try:
                    tmp = r.sub('', time)
                    date = datetime.datetime.strptime(tmp, '%Y%m%d').strftime('%Y%m%d')
                except:
                    date = None
    return date


def isfloat(x):
    try:
        if isinstance(float(x), float) and float(x)>=0:
            return True
        else:
            return False
    except:
        return False


result = LongTermShortTermCheck()